昨天裝了flannel 這個cni
現在來記錄一下什麼是flannel
才不會一路裝一些不太清楚的東西
k8s 中需要網路通訊的類別有以下四種
也就是我們需要用軟體來建構一種虛擬網路,讓外部的封包能夠知道該往何處去
這種虛擬網路又叫overlay network
也就是他是架構在已有的基礎網路之上
再去做轉送的配置。
既然是一種網路 他就會配自己自已的IP 所以網路上的圖會像下面這樣
其中k8s 允許我們自己安裝一些third praty的外掛(plugin)
這些外掛要幹麻呢
最重要的功能就是 add/delete pod
這些plugin 又被歸類為 CNI
現在的spec 為0.4.0 版
其中cni 的設計必需符合spec ,詳請見官網參考
而cni 的plugin 有很多種
今天先看一下flannel 的運作方式
借圖來源
假設上面的pod 叫做pod1 下面的pod 叫做pod2
當pod1 要與pod2做通訊的時候
可以看到pod 1 裡面有個web app 要將封包送往pod2 的backend service
一開始先透過docker 建置的veth0 送到docker bridge送到flannelID
flannel 就會將這個封包進行再一次的封裝,
可見圖中的PACKET 封包,有OUTER IP 即 INNER IP ,
其中有目標flannel的ip
在送到目標flannelID 之後就會對這個封包解析,取出原本的地址後送達原目標ip